package com.ruoyi.system.mapper;

import java.util.Date;
import java.util.List;

import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.system.domain.CommunityBusinessTarget;

/**
 * 小区业务目标Mapper接口
 * 
 * @author alex
 * @date 2025-08-05
 */
public interface CommunityBusinessTargetMapper 
{
    /**
     * 查询小区业务目标
     * 
     * @param id 小区业务目标主键
     * @return 小区业务目标
     */
    public CommunityBusinessTarget selectCommunityBusinessTargetById(Long id);

    /**
     * 查询小区业务目标列表
     * 
     * @param communityBusinessTarget 小区业务目标
     * @return 小区业务目标集合
     */
    public List<CommunityBusinessTarget> selectCommunityBusinessTargetList(CommunityBusinessTarget communityBusinessTarget);

    /**
     * 新增小区业务目标
     * 
     * @param communityBusinessTarget 小区业务目标
     * @return 结果
     */
    public int insertCommunityBusinessTarget(CommunityBusinessTarget communityBusinessTarget);

    /**
     * 修改小区业务目标
     * 
     * @param communityBusinessTarget 小区业务目标
     * @return 结果
     */
    public int updateCommunityBusinessTarget(CommunityBusinessTarget communityBusinessTarget);

    /**
     * 删除小区业务目标
     * 
     * @param id 小区业务目标主键
     * @return 结果
     */
    public int deleteCommunityBusinessTargetById(Long id);

    /**
     * 批量删除小区业务目标
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteCommunityBusinessTargetByIds(Long[] ids);



    /**
     * 根据部门ID列表查询小区业务目标
     * @param deptIds 部门ID列表
     * @return 小区业务目标列表
     */
    List<CommunityBusinessTarget> selectCommunityBusinessTargetByDeptIds(@org.apache.ibatis.annotations.Param("deptIds") List<Long> deptIds);

    /**
     * 根据部门ID列表和时间范围查询小区业务目标
     * @param deptIds 部门ID列表
     * @param targetTime 目标时间
     * @return 小区业务目标列表
     */
    List<CommunityBusinessTarget> selectCommunityBusinessTargetByDeptIdsAndTime(@org.apache.ibatis.annotations.Param("deptIds") List<Long> deptIds, @org.apache.ibatis.annotations.Param("targetTime") Date targetTime);

    /**
     * 根据小区名称查询小区业务目标
     * @param communityName 小区名称
     * @return 小区业务目标列表
     */
    List<CommunityBusinessTarget> selectCommunityBusinessTargetByCommunityName(@org.apache.ibatis.annotations.Param("communityName") String communityName);

    /**
     * 批量更新小区业务目标状态
     * @param ids 需要更新的数据主键集合
     * @param status 状态值
     * @return 结果
     */
    int updateCommunityBusinessTargetStatusByIds(@org.apache.ibatis.annotations.Param("ids") Long[] ids, @org.apache.ibatis.annotations.Param("status") String status);
}
